package com.mimosa.util;

import org.apache.commons.lang3.StringUtils;

import com.mimosa.util.constant.StringConstUtil;

/**
 * 搜索关键字常用工具类
 * 
 * @author wangchao
 * 
 */
public class KeyWordsUtil {

	/**
	 * 将字符串中的分隔符转换为+(加号),并对字符串分别加引号。<br/>
	 * 分隔符当前支持英文逗号和空格。<br/>
	 * <p>
	 * 例子1：<br/>
	 * 原始字符：中国 日本<br/>
	 * 返回字符："中国"+"日本"<br/>
	 * </p>
	 * <p>
	 * 例子2：<br/>
	 * 原始字符：中国,日本<br/>
	 * 返回字符："中国"+"日本"<br/>
	 * </p>
	 * 注：原始字符中不能同时出现英文逗号和空格，否则不保证结果正确性
	 * 
	 * @param keywords
	 *            String
	 * @return String
	 */
	public static String separatorConvertPlusAddQuote(String keywords) {
		String str = keywords;
		str = str.trim();

		String returnStr = null;
		if (StringUtils.startsWith(keywords, StringConstUtil.SINGLE_QUOTE)) {
			keywords = StringConstUtil.DOUBLE_QUOTE + keywords.substring(1);
		}
		if (StringUtils.endsWith(keywords, StringConstUtil.SINGLE_QUOTE)) {
			keywords = keywords.substring(0, keywords.length() - 1)
					+ StringConstUtil.DOUBLE_QUOTE;
		}
		if (StringUtils.startsWith(keywords, StringConstUtil.DOUBLE_QUOTE)
				&& StringUtils.endsWith(keywords, StringConstUtil.DOUBLE_QUOTE)) {
			returnStr = keywords;
		} else {
			// 多个空格转换成一个
			str = str.replaceAll("\\s{1,}", StringConstUtil.SPACE);
			// 多个逗号转换成一个
			str = str.replaceAll("\\,{1,}", StringConstUtil.COMMA);

			// 如果是逗号,换成空格
			if (str.indexOf(StringConstUtil.COMMA) != -1) {
				str = str.replaceAll(StringConstUtil.COMMA,
						StringConstUtil.SPACE);
			}

			// 分别加引号
			StringBuilder sb = new StringBuilder();
			String[] keywordArray = str.split(StringConstUtil.SPACE);
			for (String s : keywordArray) {
				if (StringUtils.startsWith(str, StringConstUtil.DOUBLE_QUOTE)
						&& StringUtils.endsWith(str,
								StringConstUtil.DOUBLE_QUOTE)) {
					sb.append(s);

				} else {
					sb.append(StringConstUtil.DOUBLE_QUOTE).append(s)
							.append(StringConstUtil.DOUBLE_QUOTE)
							.append("[100]OR").append(s);
					sb.append(StringConstUtil.PLUS);
				}
			}
			returnStr = sb.toString();
			if (returnStr.endsWith(StringConstUtil.PLUS.toString())) {
				returnStr = returnStr.substring(0, returnStr.length() - 1);
			}
		}

		return returnStr;
	}

	public static void main(String[] args) {
		System.out.println(KeyWordsUtil
				.separatorConvertPlusAddQuote("中国,,,,,,,,美国"));
	}
}
